#include "common.h"

__global__ void cache_kernel_1 (int nThreads, int* out, int* chase)
{
	uint tid = threadIdx.x + blockIdx.x * blockDim.x;
	int tmp = chase[threadIdx.x];
	if(tid < nThreads) {
		// tmp = chase[tmp];
		out[tid] = tmp;
	}
}

__global__ void cache_kernel_2 (int nThreads, int* out, int* chase)
{
	uint tid = threadIdx.x + blockIdx.x * blockDim.x;
	int tmp = chase[threadIdx.x];
	if(tid < nThreads) {
		// tmp = chase[tmp];
		tmp = chase[tmp];
		out[tid] = tmp;
	}

}

__global__ void cache_kernel_4 (int nThreads, int* out, int* chase)
{
	uint tid = threadIdx.x + blockIdx.x * blockDim.x;
	int tmp = chase[threadIdx.x];
	if(tid < nThreads) {
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		// tmp = chase[tmp];
		out[tid] = tmp;
	}

}

__global__ void cache_kernel_8 (int nThreads, int* out, int* chase)
{
	uint tid = threadIdx.x + blockIdx.x * blockDim.x;
	int tmp = chase[threadIdx.x];
	if(tid < nThreads) {
		// tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		out[tid] = tmp;
	}

}


__global__ void cache_kernel_16 (int nThreads, int* out, int* chase)
{
	uint tid = threadIdx.x + blockIdx.x * blockDim.x;
	int tmp = chase[threadIdx.x];
	if(tid < nThreads) {
		// tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		out[tid] = tmp;
	}

}


__global__ void cache_kernel_32 (int nThreads, int* out, int* chase)
{
	uint tid = threadIdx.x + blockIdx.x * blockDim.x;
	int tmp = chase[threadIdx.x];
	if(tid < nThreads) {
		// tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		out[tid] = tmp;
	}

}

__global__ void cache_kernel_64 (int nThreads, int* out, int* chase)
{
	uint tid = threadIdx.x + blockIdx.x * blockDim.x;
	int tmp = chase[threadIdx.x];
	if(tid < nThreads) {
		// tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		out[tid] = tmp;
	}

}


__global__ void cache_kernel_128 (int nThreads, int* out, int* chase)
{
	uint tid = threadIdx.x + blockIdx.x * blockDim.x;
	int tmp = chase[threadIdx.x];
	if(tid < nThreads) {
		// tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		out[tid] = tmp;
	}
}


__global__ void cache_kernel_256 (int nThreads, int* out, int* chase)
{
	uint tid = threadIdx.x + blockIdx.x * blockDim.x;
	int tmp = chase[threadIdx.x];
	if(tid < nThreads) {
		// tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		out[tid] = tmp;
	}
}

__global__ void cache_kernel_512 (int nThreads, int* out, int* chase)
{
	uint tid = threadIdx.x + blockIdx.x * blockDim.x;
	int tmp = chase[threadIdx.x];
	if(tid < nThreads) {
		// tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		out[tid] = tmp;
	}
}


__global__ void cache_kernel_1024 (int nThreads, int* out, int* chase)
{
	uint tid = threadIdx.x + blockIdx.x * blockDim.x;
	int tmp = chase[threadIdx.x];
	if(tid < nThreads) {
		// tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		tmp = chase[tmp];
		out[tid] = tmp;
	}
}


__global__ void cache_kernel_2048 (int nThreads, int* out, int* chase)
{
	uint tid = threadIdx.x + blockIdx.x * blockDim.x;
	int tmp = chase[threadIdx.x];
	if(tid < nThreads) {
		// tmp = chase[tmp];
		#pragma unroll 2048
		for(int i = 0; i < 2047; i++) {
			tmp = chase[tmp];
		}
			/*
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			tmp = chase[tmp];
			 */
		out[tid] = tmp;
	}
}


__global__ void cache_kernel_4096 (int nThreads, int* out, int* chase)
{
	uint tid = threadIdx.x + blockIdx.x * blockDim.x;
	int tmp = chase[threadIdx.x];
	if(tid < nThreads) {
		// tmp = chase[tmp];
		#pragma unroll 2048 
		for(int i = 0; i < 4095; i++) {
			tmp = chase[tmp];
		}
		out[tid] = tmp;
	}
}


